package advert_api

import (
	"github.com/gin-gonic/gin"
	"giv-vue-blog/models"
	"giv-vue-blog/models/res"
	"giv-vue-blog/service/common"
	"strings"
)

// AdvertListView 广告列表
// @Tags 广告管理
// @Summary 广告列表
// @Description 广告列表
// @Param data query models.PageInfo false "查询参数"
// @Router /api/advert [get]
// @Produce json
// @Success 200 {object} res.Response{data=res.ListResponse[models.AdvertsModel]}
func (AdvertApi) AdvertListView(c *gin.Context) {
	//PageInfo 这是一个公共查询用的结构体 包含排序和分页
	var ad models.PageInfo
	err := c.ShouldBindQuery(&ad)
	if err != nil {
		res.FailedWithError(err, &ad, c)
		return
	}
	//根据referer判断请求来自哪里，做到差异化展示
	//控制专属admin的查询方式 只要在apipost中的header中添加一个referer，并包含了admin 就会打印出所有点的
	// 反之 如果不包含admin  则只会打印出is_show是true的
	referer := c.GetHeader("Referer")
	isShow := true
	if strings.Contains(referer, "admin") {
		//	admin来的
		isShow = false
	}
	//调用service层写好的分页查询和排序接口
	list, count, err := common.CommonList(models.AdvertsModel{IsShow: isShow}, common.Option{
		PageInfo: ad,
		Debug:    true,
	})
	if err != nil {
		res.FailedWithMsg("查看广告列表失败", c)
		return
	}
	res.OkWithList(list, count, c)
	return

}
